/**
 * Created by znx on 2017-02-10.
 */
var layerLoad; //loading弹出层公共变量

$(function () {
    $('body').click(function () {
        closeUserMenu();
    })
});

//在iframe子页面控制用户信息菜单的关闭
function closeUserMenu() {
    var userMenu = $('.user-menu', window.parent.document);
    if (userMenu.hasClass('open') && userMenu.find('.dropdown-toggle').attr('aria-expanded')=='true') {
        userMenu.removeClass('open');
        userMenu.find('.dropdown-toggle').attr('aria-expanded', 'false');
    }
}

/*
 * @author zhenkai
 *
 * webUploader
 * Web Uploader 加载方法
 *
 * @param {url String} serverUrl 文件上传服务端地址
 * @param {DOM Object} selectFileBtn 选择文件按钮容器，支持id、class、DOM节点
 * @param {String} fileType 选允许上传的文件类型后缀，多个使用英文逗号分隔
 * @param {Boolean} autoUp 是否允许选择文件后就开始上传而不需要手动点击上传按钮
 * @param {Int} fileSize 最多允许上传的文件总大小，队列中所有文件大小的总和 单位：KB
 * @param {String} saveDir 保存文件的目录
 * @param {function} successCallBack 文件上传成功后执行的回调方法
 * */
function webUploader(paramObj) {
    var optionObj = new Object(paramObj);

    var option = {
        swf: '/admin/views/static/plugins/webuploader-0.1.5/Uploader.swf',
        server: optionObj.serverUrl, //文件上传服务端
        pick: {
            id: optionObj.selectFileBtn, //选择文件按钮容器，支持id、class、DOM节点
            label: '',
            multiple: false //是否允许选择多个文件
        },
        accept: {
            title: 'images', //文字描述
            extensions: optionObj.fileType, //允许上传的文件类型后缀
            //mimeTypes: 'image/*'
        },
        thumb:{ //缩略图配置
            width: 120, //缩略图宽度
            height: 90, //缩略图高度
            quality: 100, //缩略图质量，只有type为“image/jpeg”的时候才有效。
            allowMagnify: false, //是否允许缩放
            crop: true, //是否允许裁剪
            type: '' //是否强制转换为指定文件类型，为空则保留原则图片格式，如：image/jpeg
        },
        auto: optionObj.autoUp, //是否允许选择文件后立即开始自动上传，不需要手动上传
        fileNumLimit: 1, //最多允许上传几个文件，验证文件总数量, 超出则不允许加入队列
        fileSizeLimit: optionObj.fileSize*1024, //验证文件总大小是否超出限制, 超出则不允许加入队列
        fileSingleSizeLimit: optionObj.fileSize*1024, //验证单个文件大小是否超出限制, 超出则不允许加入队列。
        formData: {
            'saveDir': optionObj.saveDir,
            'fileType': optionObj.fileType,
            'fileSize': optionObj.fileSize*1024 //传到服务器的文件大小，单位KB
        }
    };
    var uploader = new WebUploader.Uploader(option);

    //错误信息
    uploader.on('error', function (type) {
        console.log(type);
        //判断是否为正整数
        //if (/^[0-9]*[1-9][0-9]*$/.test(optionObj.fileSize)) {
        //    var sizeType=(optionObj.fileSize)+'MB';
        //} else {
        //    var sizeType=(optionObj.fileSize*1000)+'KB';
            var sizeType=optionObj.fileSize+'KB';
        //}
        switch (type) {
            case 'F_EXCEED_SIZE':
                layer.msg('文件最大不允许超过'+sizeType+'！');
                break;
            case 'Q_EXCEED_SIZE_LIMIT':
                layer.msg('文件最大不允许超过'+sizeType+'！');
                break;
            case 'Q_TYPE_DENIED':
                layer.msg('文件格式只允许：'+optionObj.fileType+'！');
                //console.log('文件格式只允许：'+optionObj.fileType+'！');
                break;
        }
    });

    //将文件加入上传队列
    /*uploader.on('fileQueued', function(file) {
        uploader.makeThumb( file, function( error, src ) {
            if ( error ) {
                layer.msg('请选择正确格式的文件');
                return;
            }
            $('.headImg-rt-img').children('img').attr('src',src);
        }, 120, 120 );
    });*/

    //文件上传中
    uploader.on('uploadProgress', function(file, percentage) {
        layerLoad = layer.load(1, {shade: [0.5,'#000']});
        console.log(percentage * 100);
    });

    //文件上传成功事件
    uploader.on('uploadSuccess', function (file, response) {
        layer.close(layerLoad);

        optionObj.successCallBack(response);

        uploader.reset();
    });

    //错误处理
    uploader.on('uploadError', function(file) {
        layer.msg('请求异常，请尝试重新操作！');
    });
}

/*
* @author zhengkai
*
* initKindEditor
* 加载kindeditor编辑器
*
* @param {url String} uploadUrl 文件上传服务端地址
* @param {Boolean} isManage 是否允许浏览服务端文件
* @param {url String} manageUrl 远程文件浏览服务端地址
* @param {String} saveDir 保存文件的目录名称
* @param {String} imageType 允许上传的图片文件类型后缀名，以英文逗号分隔；允许图片文件上传的大小，与文件类型使用“|”分隔，如'jpg,gif,png|1024'，单位：KB
* @param {String} filesType 允许上传的普通文件类型后缀名，以英文逗号分隔；允许普通文件上传的大小，与文件类型使用“|”分隔，如'rar,zip,txt,doc,xls|1024'，单位：KB
* @param {String} mediaType 允许上传的媒体文件类型后缀名，以英文逗号分隔；允许媒体文件上传的大小，与文件类型使用“|”分隔，如'mp3,mp4,avi,wav|1024'，单位：KB
* @param {String} flashType 允许上传的动画文件类型后缀名，以英文逗号分隔；允许动画文件上传的大小，与文件类型使用“|”分隔，如'swf|1024'，单位：KB
* @param {String} limitImageSize 批量上传图片允许的单张图片大小，如：10MB、100KB 需要带上完整的单位
* @param {Int} limitImageNumber 批量上传图片允许最多允许同时上传张数
* @param {DOM Object} loadElement 编辑器加载的textarea表的dom节点，可以是id、class、name或者tagName
* */
function initKindEditor(paramObj) {
    var optionObj = new Object(paramObj);

    //KindEditor.ready(function(K) {
        var option = {
            minWidth: 0, //编辑器最小宽度
            minHeight: 0, //编辑器最小高度
            //需要启用的工具栏菜单
            items: [
                'source', '|', 'undo', 'redo', '|', 'preview', 'template', 'cut', 'copy', 'paste', 'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', 'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',
                'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image', 'multiimage', 'flash', 'media', 'insertfile', 'table', 'hr', 'pagebreak', 'anchor', 'link', 'unlink'
            ],
            uploadJson: optionObj.uploadUrl, //文件上传服务端url
            allowFileManager: optionObj.isManage, //是否允许浏览服务端文件 true或者false
            fileManagerJson: optionObj.manageUrl, //服务端文件浏览请求url
            extraFileUploadParams : { //上传文件时需要同时提交到服务端的参数
                'saveDir': optionObj.saveDir, //文件保存目录
                'imageType': optionObj.imageType, //允许的图片文件类型后缀及大小（后缀与文件大小使用“|”分隔，后缀则使用英文逗号分隔） kindeditor编辑器专用
                'filesType': optionObj.filesType, //允许的普通文件类型后缀及大小（后缀与文件大小使用“|”分隔，后缀则使用英文逗号分隔） kindeditor编辑器专用
                'mediaType': optionObj.mediaType, //允许的影音文件类型后缀及大小（后缀与文件大小使用“|”分隔，后缀则使用英文逗号分隔） kindeditor编辑器专用
                'flashType': optionObj.flashType //允许的动画文件类型后缀及大小（后缀与文件大小使用“|”分隔，后缀则使用英文逗号分隔） kindeditor编辑器专用
            },
            filePostName: 'file', //文件域表单名称
            imageSizeLimit: optionObj.limitImageSize, //批量上传图片单张图片允许大小
            imageUploadLimit: optionObj.limitImageNumber, //批量上传图片最多允许同时上传张数
            afterBlur: function () { //编辑器失去焦点时将数据同步到textarea
                this.sync();
            }
        };
        //var editor = K.create(optionObj.loadElement, option);
        var editor = KindEditor.create(optionObj.loadElement, option);
        return editor;
        //editor.sync();
    //});
}

/*
 * @author zhengkai
 *
 * del_file
 * 删除指定文件操作
 *
 * @param {String url} url 执行文件删除的服务端url
 * @param {String} file 要删除的文件
 * @param {Function} successFunction 成功后执行的方法
 * @param {Function} errorFunction 失败后执行的方法
 * */
function del_file(paramObj) {
    var opetion = new Object(paramObj); //参数对象
    $.getJSON(opetion.url, {'file':opetion.file}, function (result) {
        if (result['status']==1) {
            layer.msg(result['msg']);
            if (typeof(opetion.errorFunction)==='function') {
                opetion.successFunction();
            } else if (typeof opetion.successFunction==='undefined'){
            }
        } else {
            layer.msg(result['msg']);
            if (typeof opetion.errorFunction==='function') {
                opetion.errorFunction();
            } else if (typeof opetion.errorFunction==='undefined'){
            }
        }
    });
}